This invention generally relates to multi-frequency receivers and in particular, any type of signal processing in which the detection of specific frequency tones within a signal must be accomplished.
Two methods are generally used in digital multi-frequency tone receivers the digital filtering method and the Discrete Fourier Transform (DFT) method. In the filtering method, band-pass filters with centers located at those known frequencies are designed and the input signal is passed through those filters to determine if some known frequencies have occurred. The filtering method has no difficulty setting the receiver centers at arbitrary frequencies. But it is computationally very demanding in the digital domain especially when the number of frequencies which need to be detected are many.
In contrast, the DFT method, through the use of the very efficient Goertzel algorithm for calculating the DFT, requires much less computation and therefore is often the best choice in designing complex signal detectors. However, in the conventional implementations the center frequencies of the receiver can not be arbitrarily set. They are limited to those integer points in normalized frequency representing the frequency bands of the DFT. Unless the frequencies under detection are perfectly lined up with those integer points of the DFT, the receiver center frequencies cannot be precisely set to all the detection frequencies simultaneously. There is a need for a receiver which allows the center frequencies to be set at non-integer points as well, thus allowing arbitrary allocation of center frequencies of the receiver.
The following is a review how the DFT method is used in signal detection. Let ##EQU1## where k=0, 1, . . . , N-1 and W.sub.N.sup.kn =e.sup.-j(2.pi.k/N) be the N-point DFT for signal x(n). Let f.sub.s be the sampling frequency. Without loss of generality, assume N is even. Note that the DFT divides the useful spectrum 0-f.sub.s /2 into N/2 frequency bands with centers at integer points k=0, 1, . . . , (N/2)-1 corresponding to frequencies (k/N) f.sub.s. Let f.sub.1, f.sub.2, . . . f.sub.m be the frequencies to be detected. The design of a signal detector involves first selecting the proper data length N of the DFT so that the quantities (Nf.sub.i /f.sub.s), i=1, 2, . . . , m, are very close to integers. Note that this may not be trivial. Let k.sub.i =int(Nf.sub.i /f.sub.s), i=1, 2, . . . , m be those integers. The frequency components X(k.sub.i) for f.sub.i are then computed from equation (1) at integer points k.sub.i. X(k.sub.i) are then used for detecting frequency f.sub.i. The detector center frequencies are at k.sub.i, or (k.sub.i /N)f.sub.s in actual frequency.
Since it's generally not possible to select a reasonable (can not be too large) data length N such that (Nf.sub.i /f.sub.s) is an integer for all i, (k.sub.i /N)f.sub.s in general does not equal to f.sub.i. So the receiver center frequencies cannot be precisely allocated at f.sub.i for all i. Let the difference it represents from index k of the DFT to index k+1 be 100%, then these center frequencies k.sub.i can differ from the actual detection frequencies (Nf.sub.i /f.sub.s) by as much as 50%. When this is the case, the detector can easily miss a frequency entirely at one end if the actual input frequency varies from its nominal frequency slightly, or falsely detect another frequency as f.sub.i at the other if that frequency is close to f.sub.i. This is the least desired situation for signal detection because the quality and accuracy suffers when the receiver center frequency cannot be set precisely. There is a need for a receiver employing a technique that will solve this problem and further simplify the usual computations involved.
The Goertzel algorithm for evaluating the DFT in equation (1) can be stated as follows. For each integer k it requires only one parameter and two storage locations and therefore is very efficient in both computation and memory usage. EQU Q.sub.k (n)=2C.sub.k Q.sub.k (n-1)-Q.sub.k (n-2)+x(n) (2)
where C.sub.k =cos (2.pi.k/N), Q.sub.k (-1)=Q.sub.k (-2)=0, and n=0,1, . . . ,N-1. And EQU X(k) .sup.2 =Q.sub.k (N-1).sup.2 +Q.sub.k (N-2).sup.2 -2C.sub.k Q.sub.k (N-1)Q.sub.k (N-2) (3)
The first equation (2) is iterated N samples and the second equation (3) is calculated once at the end of Nth sample. In actual signal detector design, these are the equations used for calculating the frequency component X(k). The Goertzel algorithm is just a means to efficiently calculate the DFT. The limitations mentioned above are not caused by this algorithm, but result from the definition of the classic DFT itself.